package com.yizhang.generic.demo1;

import java.util.List;

public class Pair<T, E> implements Generic<T> {

    // 除了继承接口的泛型类型 还可以扩展其它类型
    private T key;
    private E value;

    public Pair(T key, E value) {
        this.key = key;
        this.value = value;
    }

    @Override
    public T getkey() {
        return key;
    }

    /**
     * 成员方法 类型跟随类
     * @return
     */
    public E  getvalue() {
        return value;
    }

    /**
     * 泛型方法 <T>来标识 类型不跟随类
     * @param list
     * @return
     * @param <T>
     */
    public <T> T getNum(List<T> list) {
        return list.get(0);
    }

    /**
     * 静态方法必须是泛型方法 不能是成员方法
     * @param list
     * @return
     * @param <T>
     */
    public static <T> T getStaticNum(List<T> list) {
        return list.get(0);
    }

    /**
     * 可以申明多种泛型
     * @param t
     * @param e
     * @param <T>
     * @param <E>
     * @param <K>
     */
    public <T, E, K> void printType(T t, E e, K k) {
        System.out.println(t);
        System.out.println(e);
        System.out.println(k);
    }

    /**
     * 可变参数
     * @param t
     * @param <T>
     */
    public <T> void printType(T... t) {
        for (int i = 0; i < t.length; i++) {
            System.out.println(t[i]);
        }
    }
}
